import axios from 'axios'

const url = '192.168.3.92:3000'

export default {
  namespaced: true,
  state () {
    return {
      // 购物车数据 [{}，{}]
      list: []
    }
  },
  getters: {
    total (state) {
      return state.list.reduce((sum, item) => sum + item.count, 0)
    },
    totalPrice (state) {
      return state.list.reduce((sum, item) => sum + item.count * item.price, 0)
    }
  },
  mutations: {
    updateList (state, newList) {
      state.list = newList
    },
    updateCount (state, obj) {
      // 根据 id 找到对应的对象，更新count属性即可
      console.log(obj)
      const goods = state.list.find(item => item.id === obj.id)
      goods.count = obj.count
    }
  },
  actions: {
    // 获取所有购物车信息
    // 请求方式: get
    // 请求地址: http://url/cart
    async getList (context) {
      const res = await axios.get(`http://${url}/cart`)
      // console.log(res)
      context.commit('updateList', res.data)
    },
    // 修改购物车货物数量
    // 请求方式: patch请求地址:http://url:3000/cart/:id值 表示修改的
    // 请求参数:
    // {
    //    name: '新值',  [可选]
    //    price: '新值',  [可选]
    //    count: '新值',  [可选]
    //    thumb: '新值',  [可选]
    // }
    async updateCountAsync (context, newCartObj) {
      // 测试从ui dispatch过来的值
      console.log(newCartObj)
      // 后端更新
      // const res =
      await axios.patch(`http://${url}/cart/${newCartObj.id}`, {
        count: newCartObj.newCount
      })
      // console.log(res)
      context.commit('updateCount', { id: newCartObj.id, count: newCartObj.newCount })
    }
  }
}
